e82022c45a3e4bb1525eb41c82f1bcfdf1a6374f,core/project/source/jetbrains/mps/project/validation/ValidationUtil.java,ValidationUtil,validateModel,#SModel#Consumer#,119

Before Change


    if (model instanceof InvalidSModel) {
      Iterable<SModel.Problem> problems = model.getProblems();
      if (!problems.iterator().hasNext()) {
        consumer.consume(new ValidationProblem(Severity.ERROR, "Couldn't read model"));
        return;
      }

      for (SModel.Problem m : problems) {
        if (!m.isError()) continue;
        consumer.consume(new ValidationProblem(Severity.ERROR, m.getText()));
      }
      return;
    }

    if (
        !model.isReadOnly() &&
            (model instanceof PersistenceVersionAware) &&
            ((PersistenceVersionAware) model).getPersistenceVersion() < ModelPersistence.LAST_VERSION
        ) {
      consumer.consume(
          new ValidationProblem(Severity.WARNING, "Outdated model persistence is used: " + ((PersistenceVersionAware) model).getPersistenceVersion() +
              ". Please run Tools->Migration 3.2->Migrate from Names to Ids"));
    }

    if (repository == null) {
      consumer.consume(new ValidationProblem(Severity.WARNING, "Model is detached from a repository, could not process further"));
      return;
    }

    SModule module = model.getModule();
    final SModelReference modelToValidateRef = model.getReference();
    for (final SModelReference reference : SModelOperations.getImportedModelUIDs(model)) {
      if (module.resolveInDependencies(reference.getModelId()) == null) {
        String msg = "Can't find model: " + SModelStereotype.withoutStereotype(reference.getModelName());
        consumer.consume(new MissingModelError(model, msg, reference));
      }
      if (reference.equals(modelToValidateRef)) {
        consumer.consume(new ImportSelfWarning(model, reference));
      }
    }

After Change


    if (model instanceof InvalidSModel) {
      Iterable<SModel.Problem> problems = model.getProblems();
      if (!problems.iterator().hasNext()) {
        if (!processor.process(new ValidationProblem(Severity.ERROR, "Couldn't read model"))) return;
        return;
      }

      for (SModel.Problem m : problems) {
        if (!m.isError()) continue;
        if (!processor.process(new ValidationProblem(Severity.ERROR, m.getText()))) return;
      }
      return;
    }

    if (
        !model.isReadOnly() &&
            (model instanceof PersistenceVersionAware) &&
            ((PersistenceVersionAware) model).getPersistenceVersion() < ModelPersistence.LAST_VERSION
        ) {
      if (!processor.process(
          new ValidationProblem(Severity.WARNING, "Outdated model persistence is used: " + ((PersistenceVersionAware) model).getPersistenceVersion() +
              ". Please upgrade model persistence"))) return;
    }

    if (repository == null) {
      if (!processor.process(new ValidationProblem(Severity.WARNING, "Model is detached from a repository, could not process further"))) return;
      return;
    }

    SModule module = model.getModule();
    final SModelReference modelToValidateRef = model.getReference();
    for (final SModelReference reference : SModelOperations.getImportedModelUIDs(model)) {
      if (module.resolveInDependencies(reference.getModelId()) == null) {
        String msg = "Can't find model: " + SModelStereotype.withoutStereotype(reference.getModelName());
        if (!processor.process(new MissingModelError(model, msg, reference))) return;
      }
      if (reference.equals(modelToValidateRef)) {
        if (!processor.process(new ImportSelfWarning(model, reference))) return;
      }
    }

    List<SModuleReference> langsToCheck = new ArrayList<SModuleReference>();